home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 6 / Amiga Format AFCD06 (Nov 1996, Issue 90).iso / serious / commercial / xfa_devkit / blitz / xfa2iff.ascii < prev    next >
Text File  |  1995-06-21  |  2KB  |  98 lines

  1.  
  2. ;********************************************************************
  3. ;
  4. ; (c) Mik of ClassX 1995
  5. ;
  6. ;
  7. ; Simple XFA -> Iff converter  (may also be a simple disk player)
  8. ;
  9. ;
  10. ;********************************************************************
  11.  
  12. XINCLUDE "LIB_XFA.BB"
  13.  
  14. WBStartup
  15. NoCli
  16.  
  17.  
  18. DEFTYPE.l
  19. DEFTYPE.XFA_Head *hd
  20. DEFTYPE.Mem mem
  21. DEFTYPE.IFFHandle *iff
  22. DEFTYPE.BitMap *bm0,*bm1
  23. DEFTYPE.Screen *sc0,*sc1
  24. DEFTYPE.w mode
  25. DEFTYPE.l cnt
  26.  
  27.  
  28. ;/* xfa file to convert */
  29. f$ = "df0:X32I.xfa"
  30.  
  31. ;/* open the file for reading */
  32. *iff = XFA_OpenRead_(f$,0,0)
  33.  
  34. If *iff
  35.  
  36.   ;/* open the screen buffer to unpack frames */
  37.   ;/* only 1 bitmap required for XFA_MODEI animations */
  38.   *hd = XFA_HeadPtr_
  39.   mode = XFA_GetPackMode_ & #XFA_MODEI
  40.  
  41.   Screen 0,0,0,*hd\BytesPerRow*8,*hd\Rows,*hd\Depth,*hd\ModeID,"",2,1
  42.   ScreensBitMap 0,0
  43.   Cls 0
  44.   *sc0 = Peek.l(Addr Screen (0))
  45.   *bm0 = Addr BitMap (0)
  46.   XFA_UseCMap_ *sc0,0
  47.  
  48.   ;/* open another buffer for no lace cunning anims */
  49.   If mode = 0
  50.     Screen 1,0,0,*hd\BytesPerRow*8,*hd\Rows,*hd\Depth,*hd\ModeID,"",2,1
  51.     ScreensBitMap 1,1
  52.     Cls 0
  53.     *sc1 = Peek.l(Addr Screen (1))
  54.     *bm1 = Addr BitMap (1)
  55.     XFA_UseCMap_ *sc1,0
  56.   EndIf
  57.  
  58.   cnt = 0
  59.   Format "00000"
  60.  
  61.   ;/* while not eof, create the frames */
  62.   While XFA_ReadFrame_(*iff,&mem)=0
  63.     ;/* first field */
  64.     XFA_UnPackBitMap_ *bm0,mem\Ptr
  65.     XFA_FreeFrame_ &mem
  66.  
  67.     ;/* second field on the same bitmap for XFA_MODEI */
  68.     If mode
  69.       If XFA_ReadFrame_(*iff,&mem)=0
  70.         XFA_UnPackBitMap_ *bm0,mem\Ptr
  71.         XFA_FreeFrame_ &mem
  72.       EndIf
  73.     EndIf
  74.  
  75.     ;;/* put here the code to save every single frame */
  76.     XFA_SaveScreen_ *sc0,"t:frame"+Str$(cnt)
  77.     ;;
  78.     If mode=0
  79.       Exchange *sc0,*sc1
  80.       Exchange *bm0,*bm1
  81.     EndIf
  82.  
  83.     cnt+1
  84.   Wend
  85.  
  86.   ;/* done with the file /*
  87.   XFA_CloseRead_ *iff
  88.  
  89. EndIf
  90.  
  91. End
  92.  
  93.  
  94.  
  95. ;Note: this code saves also the last LOOP/BLANK frames.
  96. ;******************************************************
  97.  
  98.